package com.cmyshare.design.factoryPattern;

/**
 * @version 1.0
 * @Author cmy
 * @desc 5、测试类
 */
public class Test {

    /**
     * 举例：学生做作业老师审批作业的工厂模式案例
     * People a; // 声明接口变量
     * a = new Student(); // 实例化，接口变量中存放对象的引用
     * a.peopleList(); // 接口回调
     * a = new Teacher(); // 实例化，接口变量中存放对象的引用
     * a.peopleList(); // 接口回调
     *
     * 把使用实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量
     * 该接口变量就可以调用被类实现的接口的方法
     * 实际上，当接口变量调用被类实现的接口中的方法时，就是通知相应的对象调用接口的方法，这一过程称为对象功能的接口回调
     *
     * @param args
     */
    public static void main(String[] args) {
        //实例化抽象工厂类
        WorkFactory workFactory = new WorkFactory();
        //创建学生作业对象
        Work studentWork = workFactory.createWork("Student");
        //接口回调，所以会调用实现类StudentWork下的doWork方法
        studentWork.doWork();
        //创建教师作业对象
        Work teacherWork = workFactory.createWork("Teacher");
        //接口回调，调用实现类TeacherWork下的doWork方法
        teacherWork.doWork();
    }
}
